Флаги не меняются.
Команда:
LODSW
Логика:
AX = (DS:SI)
if DF = 0
SI = SI + 2
else
SI = SI - 2
Команда LODSW передает слово, расположенное по адресу DS:SI в AX, а также инкрементирует или декрементирует SI (в зависимости от состояния флага направления DF), чтобы указатель переместился на следующее слово строки.
| Операнды | Такт байты (слова) | Обращения | Байты | Пример |
| нет операндов | 16 | - | 1 | LODSW |
| (повтор) | 9+17/rep | 1/rep | 1 | REP LODSW |
Примечания:
Хотя и разрешется использовать эту команду в повторном режиме, это почти никогда не делается, т.к. это привело бы к постоянному изменению значения в AX.
Следующий пример иллюстрирует пересылку восьми байтов иэ INIT_PORT в порт 250. (Не пробуйте делать этого на вашей машине, если Вы не знаете о назначении порта 250.)
INIT_PORT:
DB '$CMD0000' ;Строка, которую мы хотим
;переслать
CLD ;Будем передвигаться в прямом
;направлении
LEA SI,INIT_PORT ;Засылаем в SI стартовый
;адрес строки
MOV CX,4 ;Будем пересылать 4 слова
;(8 байтов)
AGAIN: LODSW ;Загружаем слово в AX...
OUT 250,AX ; ...и высылаем его в порт
LOOP AGAIN